<?php
require_once 'Zend/Controller/Action.php';
require_once 'Examenes/ExamenProvider.class.php';

class GestionExamenes_AltaExamenController extends Zend_Controller_Action {
	public function preDispatch() {
		$auth = Zend_Auth :: getInstance();
		if (!$auth->hasIdentity()) {
			$this->_redirect('acceso/auth/login');
		}
		$zend_acl = Gea_Zend_Acl_Factory :: getInstance();
		if (!$zend_acl->isAllowed($auth->getIdentity()->ROL_ID, $this->getRequest()->getModuleName())) {
			$this->_redirect('/');
		}
	}

	public function init() {
		$registry = Zend_Registry :: getInstance();
		$this->smarty = $registry->smarty;
		$this->smarty->assign('moduleName', $this->getRequest()->getModuleName());
		$this->smarty->assign('controllerName', $this->getRequest()->getControllerName());
		$this->smarty->assign('actionName', $this->getRequest()->getActionName());
		$this->smarty->assign('baseUrl', $this->getRequest()->getBaseUrl());
		$this->smarty->assign('subtitulo', 'Gestion de Examenes');
	}
	public function indexAction() {

		if ($this->getRequest()->isPost()) {
			try {
				$nombre = $this->getRequest()->getParam('nombre');
				$descripcion = $this->getRequest()->getParam('descripcion');
				$habilidadArray = $this->getRequest()->getParam('habilidad');
				$nivelArray = $this->getRequest()->getParam('nivel');
				$tipoReactivoArray = $this->getRequest()->getParam('tipoReactivo');
				$cantidadPreguntasArray = $this->getRequest()->getParam('cantidadPreguntas');
				$puntajeArray = $this->getRequest()->getParam('puntaje');
				$examen = new Examen();
				$examen->setDescripcion($descripcion);
				$examen->setNombre($nombre);
				$contador=0;
				for ($index = 0; $index < sizeof($habilidadArray); $index++) {
					$habilidad = $habilidadArray[$index];
					$nivel = $nivelArray[$index];
					$tipoReactivo = $tipoReactivoArray[$index];
					$cantidadPreguntas = $cantidadPreguntasArray[$index];
					$puntaje = $puntajeArray[$index];
					$rule = new Rule();
					$rule->setHabilidad($habilidad);
					$rule->setNivel($nivel);
					$rule->setNumeroPreguntas($cantidadPreguntas);
					$rule->setTipoReactivo($tipoReactivo);
					$rule->setPuntaje($puntaje);
					$examen->addRule($rule);
					$contador=$contador+$puntaje;
				}
				if($contador!=100)
					throw new Exception("La suma de los puntajes debe ser 100.");
				ExamenProvider :: saveExamen($examen);
				$this->smarty->assign('mensajeCorrecto', "Se dio de alta correctamente el examen");
			} catch (Exception $e) {
				$this->smarty->assign('mensajeError', "Error ! :" . $e->getMessage());
			}
		}

		$registry = Zend_Registry :: getInstance();
		$config = $registry->config;
		$niveles = explode(',', $config->appSettings->niveles->lista);
		$optionsNiveles = array ();
		foreach ($niveles as $nivel) {
			$optionsNiveles[$config->appSettings->niveles-> $nivel->indice] = $config->appSettings->niveles-> $nivel->nombre;
		}
		$habilidades = explode(',', $config->appSettings->habilidades->lista);
		$optionsHabilidades = array ();
		foreach ($habilidades as $habilidad) {
			$optionsHabilidades[$config->appSettings->habilidades-> $habilidad->indice] = $config->appSettings->habilidades-> $habilidad->nombre;
		}

		$tiposReactivo = explode(',', $config->appSettings->tiposReactivo->lista);
		$optionstiposReactivo = array ();
		foreach ($tiposReactivo as $tipo) {
			$optionstiposReactivo[$config->appSettings->tiposReactivo-> $tipo->indice] = $config->appSettings->tiposReactivo-> $tipo->nombre;
		}

		$optionsNumPreguntas = array ();
		for ($i = 1; $i <= 10; $i++) {
			$optionsNumPreguntas[$i] = $i;
		}

		$this->smarty->assign('cantidadPreguntas', $optionsNumPreguntas);
		$this->smarty->assign('niveles', $optionsNiveles);
		$this->smarty->assign('habilidades', $optionsHabilidades);
		$this->smarty->assign('tiposReactivo', $optionstiposReactivo);
		$divRule = $this->smarty->fetch('gestionexamenes_altaexamen_divrule.tpl', true);
		$this->smarty->assign('divRule', preg_replace("/\r?\n/", "\\n", addslashes($divRule)));
		$this->smarty->displayInMasterPage('gestionexamenes_altaexamen_index.tpl', 'MasterPage.tpl');
	}

}
?>